package com.ruoyi.orm.web;

import java.util.ArrayList;
import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.isolar.comps.core.utils.JakartaServletUtil;
import com.isolar.comps.core.utils.lang.StringUtils;
import com.isolar.comps.core.utils.text.Convert;
import com.isolar.comps.core.web.page.PageDomain;
import com.isolar.comps.core.web.page.TableDataInfo;
import com.ruoyi.common.utils.PageUtils;

/**
 * 表格数据处理
 * 
 */
public class PageSupport {
    /**
     * 封装分页对象
     */
    public static PageDomain getPageDomain()
    {
        PageDomain pageDomain = new PageDomain();
        pageDomain.setPageNum(Convert.toInt(JakartaServletUtil.getRequest().getParameter(PageUtils.PAGE_NUM)));
        pageDomain.setPageSize(Convert.toInt(JakartaServletUtil.getRequest().getParameter(PageUtils.PAGE_SIZE)));
        pageDomain.setOrderByColumn(Convert.toStr(JakartaServletUtil.getRequest().getParameter(PageUtils.ORDER_BY_COLUMN)));
        pageDomain.setIsAsc(Convert.toStr(JakartaServletUtil.getRequest().getParameter(PageUtils.IS_ASC)));
        pageDomain.setReasonable(Convert.toBool(JakartaServletUtil.getRequest().getParameter(PageUtils.REASONABLE)));
        return pageDomain;
    }
    
    
    public static IPage buildPage(PageDomain pageDomain) {
        Page page = new Page<>();
        if(pageDomain.getPageSize() != null){
            page.setSize(pageDomain.getPageSize());
        }
        if(pageDomain.getPageNum() != null){
            page.setCurrent(pageDomain.getPageNum());
        }
        if(StringUtils.isNotEmpty(pageDomain.getOrderByColumn())){
            List<OrderItem> orderItemList = new ArrayList<>();
            String orderByColumn = pageDomain.getOrderByColumn();
            boolean isAsc = StringUtils.equals(pageDomain.getIsAsc(),"asc");
            OrderItem orderItem = new OrderItem();
            orderItem.setColumn(orderByColumn);
            orderItem.setAsc(isAsc);
            orderItemList.add(orderItem);
            page.setOrders(orderItemList);
        }
        return page;
    }
    
    /**
     * 封装分页对象
     */
    public static TableDataInfo getTableDataInfo(IPage page)
    {
    	TableDataInfo tableDataInfo = new TableDataInfo();
    	tableDataInfo.setPageSize(page.getSize());
    	tableDataInfo.setPageNo(page.getCurrent());
    	tableDataInfo.setCount(page.getTotal());
    	tableDataInfo.setList(page.getRecords());
        return tableDataInfo;
    }
    
    public static IPage buildPageParam(){
        PageDomain pageDomain = getPageDomain();
        return buildPage(pageDomain);
    }
}
